{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f9ef5bb9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n",
      "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (1.4.1.post1)\n",
      "Requirement already satisfied: numpy<2.0,>=1.19.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn) (1.24.3)\n",
      "Requirement already satisfied: scipy>=1.6.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn) (1.10.1)\n",
      "Requirement already satisfied: joblib>=1.2.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn) (1.2.0)\n",
      "Requirement already satisfied: threadpoolctl>=2.0.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn) (2.2.0)\n",
      "Note: you may need to restart the kernel to use updated packages.\n"
     ]
    }
   ],
   "source": [
    "pip install -U scikit-learn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "090cd1aa",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.metrics import mean_absolute_error\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import r2_score\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "76c4a191",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import metrics\n",
    "import seaborn as sns\n",
    "%matplotlib inline\n",
    "plt.rcParams['font.sans-serif']=['SimHei']\n",
    "#⽤来正常显示中⽂标签\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "#⽤来正常显示负号 #有中⽂出现的情况，需要u'内容'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "f110430d",
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入数据\n",
    "data = pd.read_csv('C:/L2_Week3.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "437fba26",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>age</th>\n",
       "      <th>job</th>\n",
       "      <th>marital</th>\n",
       "      <th>default</th>\n",
       "      <th>returned</th>\n",
       "      <th>loan</th>\n",
       "      <th>coupon_used_in_last6_month</th>\n",
       "      <th>coupon_used_in_last_month</th>\n",
       "      <th>coupon_ind</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>43</td>\n",
       "      <td>management</td>\n",
       "      <td>married</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>42</td>\n",
       "      <td>technician</td>\n",
       "      <td>divorced</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>47</td>\n",
       "      <td>admin.</td>\n",
       "      <td>married</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>management</td>\n",
       "      <td>single</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>42</td>\n",
       "      <td>technician</td>\n",
       "      <td>divorced</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   ID  age         job   marital default returned loan  \\\n",
       "0   1   43  management   married      no      yes   no   \n",
       "1   2   42  technician  divorced      no      yes   no   \n",
       "2   3   47      admin.   married      no      yes  yes   \n",
       "3   4   28  management    single      no      yes  yes   \n",
       "4   5   42  technician  divorced      no      yes   no   \n",
       "\n",
       "   coupon_used_in_last6_month  coupon_used_in_last_month  coupon_ind  \n",
       "0                           2                          0           0  \n",
       "1                           1                          1           0  \n",
       "2                           2                          0           0  \n",
       "3                           2                          0           0  \n",
       "4                           5                          0           0  "
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看数据\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "628e83c3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(25317, 10)"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看数据形状\n",
    "data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "12d11a3a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(25317, 10)"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看数据形状\n",
    "data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "40169d99",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0.883043\n",
       "1    0.116957\n",
       "Name: coupon_ind, dtype: float64"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#coupon_ind为要预测的目标值\n",
    "#查看目标值的分布情况\n",
    "data['coupon_ind'].value_counts(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "007799c5",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_632\\14012877.py:3: FutureWarning: The default value of numeric_only in DataFrame.corr is deprecated. In a future version, it will default to False. Select only valid columns or specify the value of numeric_only to silence this warning.\n",
      "  sns.heatmap(data.corr()[['coupon_ind']])\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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V6/Wj370I5WVlSktLU1PPvmk9uzZoz179ujFF1+8ZnybzaaGhgano8Ug/zIDAHxEi909hwFQqMJwSkpKlJmZqSNHjqixsVEHDx6UJBUXF+t73/uehg0bpsGDB6uiokLh4eHasGGDvvWtb+nRRx9V//79lZ6ero0bN14zdm5uriwWi9NRd+brzrw8AADw/7GZCobSpUsXLVmyRK+99pr69eun2NhYNTc3S5IGDBigTz/9VD169NChQ4c0ePBgSdKxY8dUVFSksLAwSdLFixcVHBx8zfhZWVnKzMx0eu/b/e66adcDAICr7AbphroDhSoMJT8/XytWrNDhw4fVu3dvbd26VXv27JEkDRkyRL/4xS/02GOP6YknntDw4cMlSVFRUZo8ebIWL14sSWpubtaZM2euGd9sNstsNju918XExAMAwItQqALeqampSZJUX1+vw4cPKzMzU3a7XV999ZU++OADffzxx7JYLIqOjnaMmTp1qpYtW6ZDhw4pISFBv/vd7/TJJ5+osLDQU5cBAAA6gFYRDGXChAmaPHmyvv3tbys9PV2PPfaYqqurddttt6l379668847FR8fr65duyo9PV2S1K9fP61Zs0aZmZkaMmSISktLtWHDBg9fCQAA16mlxT2HAZjsdrvv9I9xy1q1apX++te/6rXXXlO3bt1UUlKiiRMn6sSJEwoNDb2h2AN7/pubsgQA3OoOnrz5s3WNj9/rljghL29zS5ybial/3BLuvvturV+/XomJiTp79qzi4+P129/+9oaLVAAAvA5rVAFjiY+P13//9397Og0AAOBGFKoAAAAG4kurNilUAQAAjMSHpv7Z9Q8AAACvREcVAADASHyoo0qhCgAAYCC+9AhVpv4BAADgleioAgAAGIkPdVQpVAEAAIzEGE8/dQum/gEAAOCV6KgCAAAYiC9tpqJQBQAAMBIKVQAAAHgl1qgCAAAAnkVHFQAAwEBYowoAAADvxNQ/AAAA8L9KS0uVlJSk8PBwzZ07V3Z7xzu7Dz30kH7+85+7fE4KVQAAAAOxt9jdcrjCZrPp/vvv14gRI1RYWKh9+/bJarV2aOw777yj9957TwsXLnT5WilUAQAAjKTFTYcLtm3bpvr6ei1ZskT9+/fXokWLtGrVqnbHnT17Vo8//rjy8vIUFhbm2klFoQoAAOCTbDabGhoanA6bzXbN75aU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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#查看特征值与目标值的相关关系\n",
    "#进行one—hot编码前\n",
    "sns.heatmap(data.corr()[['coupon_ind']])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "36bd043d",
   "metadata": {},
   "outputs": [],
   "source": [
    "#选取特征值\n",
    "X = data.iloc[:,0:9]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "e96be8f3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>age</th>\n",
       "      <th>job</th>\n",
       "      <th>marital</th>\n",
       "      <th>default</th>\n",
       "      <th>returned</th>\n",
       "      <th>loan</th>\n",
       "      <th>coupon_used_in_last6_month</th>\n",
       "      <th>coupon_used_in_last_month</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>43</td>\n",
       "      <td>management</td>\n",
       "      <td>married</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>42</td>\n",
       "      <td>technician</td>\n",
       "      <td>divorced</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>47</td>\n",
       "      <td>admin.</td>\n",
       "      <td>married</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>management</td>\n",
       "      <td>single</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>42</td>\n",
       "      <td>technician</td>\n",
       "      <td>divorced</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   ID  age         job   marital default returned loan  \\\n",
       "0   1   43  management   married      no      yes   no   \n",
       "1   2   42  technician  divorced      no      yes   no   \n",
       "2   3   47      admin.   married      no      yes  yes   \n",
       "3   4   28  management    single      no      yes  yes   \n",
       "4   5   42  technician  divorced      no      yes   no   \n",
       "\n",
       "   coupon_used_in_last6_month  coupon_used_in_last_month  \n",
       "0                           2                          0  \n",
       "1                           1                          1  \n",
       "2                           2                          0  \n",
       "3                           2                          0  \n",
       "4                           5                          0  "
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "d7091dd2",
   "metadata": {},
   "outputs": [],
   "source": [
    "#将类别型变量进行哑变量处理\n",
    "marital = pd.get_dummies(X['marital'])\n",
    "job = pd.get_dummies(X['job'])\n",
    "default = pd.get_dummies(X['default'])\n",
    "returned = pd.get_dummies(X['returned'])\n",
    "loan = pd.get_dummies(X['loan'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "0e1fc981",
   "metadata": {},
   "outputs": [],
   "source": [
    "#将处理好的哑变量与原来的数据按列连接\n",
    "XX = pd.concat([X,job,marital,default,returned,loan],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "ef03fec2",
   "metadata": {},
   "outputs": [],
   "source": [
    "XXX = pd.concat([XX,data['coupon_ind']],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "0bdf8272",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_632\\1768420971.py:1: FutureWarning: The default value of numeric_only in DataFrame.corr is deprecated. In a future version, it will default to False. Select only valid columns or specify the value of numeric_only to silence this warning.\n",
      "  sns.heatmap(XXX.corr()[['coupon_ind']])\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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+PDhGutevLaL/77o4MGDNp9heHi4zf9Hv1wmUZfPpbb1EhMTVVJSYlOae11Vqz4AAGgQTP1XLjg4WPv27bMel5WVKSoqSiEhITavnzlzRocPH1ZISIgMBoM1IZKkzZs327R54MAB68jlgQMH5OHhoVatWlXbpiTr6FldVBfLqVOndOrUKa1bt07//e9/dfPNN1tHUIOCgjR06FBt375d27dvV05OjtatWydJCggIsEnMLiawV+pyrq86r776qgoLC3Xs2DF9+umn6tOnj/W9Q4cOqXv37tqyZYsOHDig4uJivfDCC9b33dwu/G/y6+QuODjYZrnF/v37ZTAYbBL3ugoJCdHevXutx3l5edb/5lL1n0tVcdZU75e8vLzk6+trUwwGbo4BAHAijWjqv07fwDExMSouLtbLL7+sQ4cO6cUXX1RFRYViYmJ08uRJJScna//+/XryySfVoUMH9erVS0FBQTpy5Ijy8vJ06tSpS+5nefjwYaWkpGjfvn2aMWOGYmNj5e7ursGDB1fZ5uWqLhaz2ayYmBgtWrRIJ06ckJubmzWBfuCBB7Rhwwbt3r1b0oWkb8yYMZKk2NhYLV68WF999ZW++eYbvfPOO5cdX30qKyuTxWLRiRMn9MEHH2jevHnWhG7nzp0aOHCgvvzyS506dUoGg8FmfXHbtm3VvHlzrVy5Uvv377duUho5cqRmzpypTZs2affu3frjH/+oO++8U82aNbvsOB999FHNnTtX69ev17Zt25SUlGRdt1yTquIEAACuqU6Jqq+vr7KysrRy5Up17txZGzdu1LJly9SiRQutXbtWn3zyibp166YDBw5oxYoVcnNzU0REhCZNmqT+/furf//+1g1KF/Xu3Vvbtm3Tddddp7Nnz+r111+XJPn4+FTZ5uWqLpYWLVpo0aJFeumllxQREaGVK1dq3rx5ki5MP6enp2vKlCnq2rWrcnNzrWschw8frgkTJig2NlYPP/ywYmNjLzu++vTkk0/KYrGoY8eOeu+99zR27Fht375dknTXXXfpscce03333aeOHTvKYrHYbN7y9PTUu+++q8cff1xdunTR8uXLJUljx47VY489phEjRliXYVzchHW5hg8frueee06jR4/WoEGDNGrUKP3hD3+oVd2q4gQA4DelEY2oGixXuvjxCqSlpSktLU3Z2dmOCgGo0dXGzo4OAQDg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raefflqxsbFq3bq1tmzZoqSkJA0cOFC/+93v5Ofnp/vvv1+lpaW1ivPzzz/XddddJ39/f40cOVI///yzJOmFF17Q4MGDreft2bNH3t7e1niysrLUrVs3GY1GjRs3zuYxcC+88IJat26tyMhIbd269XI+PgAAnIK9HqHqCkhUIUkqKipSamqqVq9ereTkZE2dOlWnT5/Wzz//rIEDByomJkbfffedysvLbZ4uUVJSounTp+uVV15RfHy8unTpoqysLEkXEsexY8dq8+bNys/P1/Tp02uM4+DBgxo0aJAmTpyoLVu2qKysTPHx8ZKkuLg4/fvf/7YmvMuWLVN0dLT8/PyUl5en2NhYTZ48WVu2bNGWLVs0c+ZMSVJmZqb+9re/aenSpVq4cKEWL15s508PAADUBxJVSJLKyso0b948RUVFKSEhQWfPntXx48e1atUqeXp6avr06QoJCdHkyZOVmZlprffwww+ra9euatOmje655x61b99e586dkyT169dPo0ePVocOHfT0009rxYoVNcaxaNEi9e3bV+PHj1d4eLjeeustrVixQkePHlXHjh3VqVMnrVq1SpK0fPlyxcXFSZIyMjLUo0cPPfLII4qIiFBCQoI1zmXLlmnUqFG65ZZb1LdvX40bN67K/k0mk0pLS22K2eIqf3cCABoDR9xH1VFYo9qIlZeXW3/29/fXtddeK0nWp0xYLBYVFBSosLDQ+ng0s9mskydP6syZM5Iu3Gril//+peDgYOvPgYGBOnbsWI0xHTx4UOHh4dbjdu3aycvLSwcPHtTVV1+tESNG6KOPPtLtt9+unJwcDRkyRJJUUFCgrVu3Wm95cf78efn4+EiSjhw5ottuu83aZnh4uL755ptK+09JSVFycrLNa4E+oQpqEVZj7AAANASza+SYdkGi2ogYDAZVVFRYjzdv3mz92dfXt9I6QUFBuuGGG7RkyRJJF5LXkpKSS27qW5lf3q7iwIEDatu2bY11QkJC9Omnn1qPCwoKZDKZFBISIunC9P9LL72kjIwMDRw40JqMBgUFaejQoZo1a5YkqaKiwpqIBwQE6PDhwzaxVCUxMVFTpkyxee2OawZXcTYAAA2vro8/dWVM/TciQUFBOnLkiPLy8nTq1CklJSXVWCcmJkb79+/Xpk2b5O7uriVLlig6OloWi6XGuhs3blR6erp2796tV155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z8+mWMwnG+T6AACoDYvFYpdSV7m5uerVq5f8/f01derUWrWxfv16de7cWa1atdKcOXPq3CeJKlzKiBEj9NFHH+ncuXNas2aNRowYoYKCAhUWFsrf319Go1H33XefCgsLdebMGTVt2lQffvih5s+fr9atWys6Olp79+6tsv3ExESVlJTYFINbiwa8QgAAqmeWxS6lLkwmk4YMGaKePXtq8+bN2rlzp9LS0qqtU1hYqKFDh+qBBx7Q119/rcWLF+uzzz6rU78kqnApQ4cO1c6dO/Xee+8pMjJSERERCgoK0g033KDt27dr+/btysnJ0bZt2+Tp6amioiL5+/vryy+/1LFjxxQQEKDJkydX2b6Xl5d8fX1tisFgaMArBADA+Xz88ccqKSnRnDlzFBERoZdfflkLFiyots7ixYvVtm1bTZ8+XR06dNBzzz1XY51fI1GFS/Hx8dHAgQP15z//WXFxcZKkmJgY7d+/X5s2bZK7u7uWLFmi6OhoWSwWnThxQrfffruysrJUWloqNzc3mc1mB18FAACXz15T/5XtyzCZTJX2mZOTo969e6tZs2aSpO7du2vnzp3VxpmTk6PbbrvNOuBz4403auvWrXW6VhJVuJy4uDiVlpZqxIgRkiSj0ajMzEzNnj1bnTp10rJly5SZmSkPDw9dc801mj17th5//HGFh4dr165deuWVVxx8BQAAXD57Tf1Xti8jJSWl0j5LS0vVvn1767HBYJC7u7uKi4urjPPXdXx9fVVQUFCna+U+qnApe/fu1enTp9W3b1+FhIRYX+/Vq5e++eabSutMmDBBEyZMaKgQAQCoV/a6tVRiYqKmTJli85qXl1el53p4eFzynre3t8rLy+Xv71+rOhfPrwsSVbiUYcOG6fjx4/rwww8dHQoAAC7Ny8urysT011q2bKnc3Fyb106ePKkmTZpUW6ewsLDW51eGRBUuZceOHY4OAQAAhzI74P7evXr10rvvvms9zs/Pl8lkUsuWLautk5GRYT3evn27AgMD69QviSpQg9vadHN0CAAAWDniqVK33HKLSkpKtHDhQo0ePVqpqam644475O7urtLSUjVt2lSenp42dYYOHaqJEyfqs88+080336xZs2bp7rvvrlO/JKoAAAColoeHh+bPn6+RI0dq6tSpqqio0Pr16yVduAPA3LlzNWzYMJs6rVq10uzZs3X33XfLz89PzZs3r/PtqQwWng8JVOuu4GhHhwAAcBGfHMyq9z46B9xol3Z+OL6pznUKCgq0efNm9e3bV61bt65VnT179uiHH37Q7373O/n6+tapP0ZUAQAAXIgjpv4vCgwMrPM608jISEVGRl5Wf9xHFQAAAE6JEVUAAAAX4ohd/45CogoAAOBCHDn139CY+gcAAIBTYkQVAADAhTD1DwAAAKfUmKb+SVQBAABciMVidnQIDYY1qgAAAHBKjKgCAAC4EDNT/wAAAHBGFjZTAbjo+7KDjg4BAIBGiUQVAADAhTD1DwAAAKfUmKb+2fUPAAAAp0SiCpfx/vvvKyoqynpcVlYmb29v/fjjj/r222910003yc/PT8OHD1dJSYn1vEWLFiksLEzNmzfXwIEDVVRU5IjwAQCwC7PFYpfiCkhU4TJiY2O1Z88e7dq1S5L08ccfq1OnTrr66qs1cOBAxcTE6LvvvlN5ebmeeuopSReS2TFjxig1NVU7d+6Uh4eHZs2a5cjLAADgiljs9I8rYI0qXIavr6+io6O1dOlSPfPMM1q+fLni4uK0atUqeXp6avr06TIYDJo8ebIeeughSZK7u7s8PT1lMpkUEBCgzMzMatf2mEwmmUwmm9csFrMMBv6mAwA4B9aoAk5qxIgR+uijj3Tu3DmtWbNGI0aMUEFBgQoLC+Xv7y+j0aj77rtPhYWFOnPmjJo2baoPP/xQ8+fPV+vWrRUdHa29e/dW2X5KSor8/PxsyskzJxrwCgEAwEUkqnApQ4cO1c6dO/Xee+8pMjJSERERCgoK0g033KDt27dr+/btysnJ0bZt2+Tp6amioiL5+/vryy+/1LFjxxQQEKDJkydX2X5iYqJKSkpsSgvvVg14hQAAVM8si12KKyBRhUvx8fHRwIED9ec//1lxcXGSpJiYGO3fv1+bNm2Su7u7lixZoujoaFksFp04cUK33367srKyVFpaKjc3N5nN5irb9/Lykq+vr01h2h8A4EwsFotdiivgGxguJy4uTqWlpRoxYoQkyWg0KjMzU7Nnz1anTp20bNkyZWZmysPDQ9dcc41mz56txx9/XOHh4dq1a5deeeUVB18BAACoDYPFVVJqQNLevXu1YcMGvfPOO/riiy8apM9A/64N0g8AwPUVFH9f7320bNHBLu389+Ruu7RTn9j1D5cybNgwHT9+XB9++KGjQwEAwCEa0xgjiSpcyo4dOxwdAgAAaCAkqkAN8nevdHQIAABYucqOfXsgUQUAAHAhjWnqn13/AAAAcEqMqAIAALgQcyMaUSVRBQAAcCEW1qgCAADAGTWmEVXWqAIAAMApMaIKAADgQhrTrn8SVQAAABfSmNaoMvUPAAAAp8SIKgAAgAth6h8AAABOqTElqkz9AwAAwCkxogoAAOBCGs94qmSwNKbxYwCAXZhMJqWkpCgxMVFeXl6ODgfAbxSJKgCgzkpLS+Xn56eSkhL5+vo6OhwAv1GsUQUAAIBTIlEFAACAUyJRBQAAgFMiUQUA1JmXl5eef/55NlIBqFdspgIAAIBTYkQVAAAATolEFQAAAE6JRBUAAABOiUQVANDg8vPzZTAYHFYfgGsgUQUANLiQkBAVFxc7OgwATo5EFQDQ4Nzc3GQ0Gh0dBgAnR6IKAC5m27Zt6tOnj3x8fNSvXz99//33kqTc3Fz1799ffn5+GjRokA4dOiRJys7OVlhYmE0bBoNB+fn5SktL04033qjY2Fj5+fkpOjpaR44csZ5XU5uZmZkKDQ2Vv7+/XnvttVpfQ2VT9zW1uWrVKkVGRuqqq65SWlpaXT4yAC6KRBUAXEhpaamio6M1dOhQ7dq1S71799aoUaNUVlamu+66S3feead27Nih4OBgxcbGymw219jmt99+qz59+mj79u3y8vJSQkKCJNXYZlFRkVJTU7V69WolJydr6tSpOn369BVdX1VtHjt2THFxcXr66af1zTffaM2aNVfUDwAXYQEAuIzFixdbOnXqZD3+73//a1myZInlgw8+sHTs2NH6+pkzZywtWrSwfP3115bPPvvMEhoaatOOJMu+ffss7733niUoKMhiNpstFovFsnXrVou7u7vl3LlzNbYpybJ9+3aLxWKxmEwmiyRLfn5+ra5j3759ll9/BVXXZlpamiUqKsp67po1ay6pD+C3hxFVAHAhhw4dspnG9/f3V1xcnA4ePKj27dtbX/fy8lK7du108ODBS9ooLy+3OQ4KCrJOwwcGBqqiokJFRUU1tunv769rr71WktSkSRNJkuUKH3ZYVZtHjhxRcHCw9bzw8PAr6geAayBRBQAXEhwcrH379lmPy8rKFBUVpZCQEJvXz5w5o8OHDyskJEQGg0EVFRXW9zZv3mzT5oEDB6zT+QcOHJCHh4datWpVbZuS5Ovra/frq6rNgIAAHT582CZmAL99JKoA4EJiYmJUXFysl19+WYcOHdKLL76oiooKxcTE6OTJk0pOTtb+/fv15JNPqkOHDurVq5eCgoJ05MgR5eXl6dSpU0pKSrJp8/Dhw0pJSdG+ffs0Y8YMxcbGyt3dXYMHD66yzYZ29913a9euXUpPT1deXt4l1wDgt4lEFQBciK+vr7KysrRy5Up17txZGzdu1LJly9SiRQutXbtWn3zyibp166YDBw5oxYoVcnNzU0REhCZNmqT+/furf//+mjZtmk2bvXv31rZt23Tdddfp7Nmzev311yVJPj4+VbbZ0AIDA/XBBx8oOTlZ/fv3V79+/Ro8BgANz2C50gVFAACXlZaWprS0NGVnZzs6FAC4hIejAwAA/LZUdSP/jh07atOmTQ0bDACXxogqAMCu8vPzK33d09NTgYGBDRsMAJdGogoAAACnxGYqAAAAOCUSVQAAADglElUAAAA4JRJVAAAAOCUSVQAAADglElUAAAA4JRJVAAAAOCUSVQAAADil/wcSTntU/XaB/gAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(XXX.corr()[['coupon_ind']])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "8f64e004",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['management', 'technician', 'admin.', 'services', 'retired',\n",
       "       'student', 'blue-collar', 'unknown', 'entrepreneur', 'housemaid',\n",
       "       'self-employed', 'unemployed'], dtype=object)"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X['job'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "2cb3844e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['married', 'divorced', 'single'], dtype=object)"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X['marital'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "2fb7c17a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['no', 'yes'], dtype=object)"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X['default'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "734281cc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['yes', 'no'], dtype=object)"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X['returned'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "b8476a56",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['no', 'yes'], dtype=object)"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X['loan'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "1d4a3ae9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "no     0.839673\n",
       "yes    0.160327\n",
       "Name: loan, dtype: float64"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['loan'].value_counts(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "50ad14b1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "yes    0.553778\n",
       "no     0.446222\n",
       "Name: returned, dtype: float64"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['returned'].value_counts(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "70aff96a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "married     0.602165\n",
       "single      0.282695\n",
       "divorced    0.115140\n",
       "Name: marital, dtype: float64"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['marital'].value_counts(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "5ec067e2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "no     0.982304\n",
       "yes    0.017696\n",
       "Name: default, dtype: float64"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['default'].value_counts(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "f9fa5405",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "blue-collar      0.215507\n",
       "management       0.209188\n",
       "technician       0.167516\n",
       "admin.           0.114903\n",
       "services         0.092507\n",
       "retired          0.050282\n",
       "self-employed    0.034917\n",
       "entrepreneur     0.033811\n",
       "unemployed       0.027689\n",
       "housemaid        0.026188\n",
       "student          0.021053\n",
       "unknown          0.006438\n",
       "Name: job, dtype: float64"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['job'].value_counts(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "1354b1b1",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = [2,3,4,5,6]\n",
    "XX.drop(XX.columns[x], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "7b3b082b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>age</th>\n",
       "      <th>coupon_used_in_last6_month</th>\n",
       "      <th>coupon_used_in_last_month</th>\n",
       "      <th>admin.</th>\n",
       "      <th>blue-collar</th>\n",
       "      <th>entrepreneur</th>\n",
       "      <th>housemaid</th>\n",
       "      <th>management</th>\n",
       "      <th>retired</th>\n",
       "      <th>...</th>\n",
       "      <th>unknown</th>\n",
       "      <th>divorced</th>\n",
       "      <th>married</th>\n",
       "      <th>single</th>\n",
       "      <th>no</th>\n",
       "      <th>yes</th>\n",
       "      <th>no</th>\n",
       "      <th>yes</th>\n",
       "      <th>no</th>\n",
       "      <th>yes</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>43</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>42</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>47</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>42</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25312</th>\n",
       "      <td>25313</td>\n",
       "      <td>55</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25313</th>\n",
       "      <td>25314</td>\n",
       "      <td>52</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25314</th>\n",
       "      <td>25315</td>\n",
       "      <td>35</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25315</th>\n",
       "      <td>25316</td>\n",
       "      <td>37</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25316</th>\n",
       "      <td>25317</td>\n",
       "      <td>52</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>25317 rows × 25 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          ID  age  coupon_used_in_last6_month  coupon_used_in_last_month  \\\n",
       "0          1   43                           2                          0   \n",
       "1          2   42                           1                          1   \n",
       "2          3   47                           2                          0   \n",
       "3          4   28                           2                          0   \n",
       "4          5   42                           5                          0   \n",
       "...      ...  ...                         ...                        ...   \n",
       "25312  25313   55                           2                          1   \n",
       "25313  25314   52                           1                          1   \n",
       "25314  25315   35                           2                          0   \n",
       "25315  25316   37                           2                          0   \n",
       "25316  25317   52                           3                          0   \n",
       "\n",
       "       admin.  blue-collar  entrepreneur  housemaid  management  retired  ...  \\\n",
       "0           0            0             0          0           1        0  ...   \n",
       "1           0            0             0          0           0        0  ...   \n",
       "2           1            0             0          0           0        0  ...   \n",
       "3           0            0             0          0           1        0  ...   \n",
       "4           0            0             0          0           0        0  ...   \n",
       "...       ...          ...           ...        ...         ...      ...  ...   \n",
       "25312       0            1             0          0           0        0  ...   \n",
       "25313       0            0             0          0           0        0  ...   \n",
       "25314       0            1             0          0           0        0  ...   \n",
       "25315       0            0             1          0           0        0  ...   \n",
       "25316       0            0             0          0           1        0  ...   \n",
       "\n",
       "       unknown  divorced  married  single  no  yes  no  yes  no  yes  \n",
       "0            0         0        1       0   1    0   0    1   1    0  \n",
       "1            0         1        0       0   1    0   0    1   1    0  \n",
       "2            0         0        1       0   1    0   0    1   0    1  \n",
       "3            0         0        0       1   1    0   0    1   0    1  \n",
       "4            0         1        0       0   1    0   0    1   1    0  \n",
       "...        ...       ...      ...     ...  ..  ...  ..  ...  ..  ...  \n",
       "25312        0         1        0       0   1    0   1    0   1    0  \n",
       "25313        0         0        1       0   1    0   1    0   0    1  \n",
       "25314        0         1        0       0   1    0   0    1   1    0  \n",
       "25315        0         1        0       0   1    0   1    0   1    0  \n",
       "25316        0         0        1       0   1    0   1    0   1    0  \n",
       "\n",
       "[25317 rows x 25 columns]"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "XX"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "6bbfc19c",
   "metadata": {},
   "outputs": [],
   "source": [
    "#分离训练集与测试集\n",
    "XX_train,XX_test,Y_train,Y_test = train_test_split(XX,data['coupon_ind'],train_size=0.75)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "5ba6dbd5",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\anaconda3\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:469: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-2 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-2 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-2 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-2 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-2 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression(C=10000.0, class_weight=&#x27;balanced&#x27;, random_state=100)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression(C=10000.0, class_weight=&#x27;balanced&#x27;, random_state=100)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "LogisticRegression(C=10000.0, class_weight='balanced', random_state=100)"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#训练逻辑回归模型，这里由于目标值样本不均衡，采用加权的方式建立模型\n",
    "model = LogisticRegression(C=1e4,random_state=100,class_weight='balanced')\n",
    "model.fit(XX_train, Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "694664db",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.9991</td>\n",
       "      <td>0.0009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.9999</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.9999</td>\n",
       "      <td>0.0001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.3350</td>\n",
       "      <td>0.6650</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.2661</td>\n",
       "      <td>0.7339</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18982</th>\n",
       "      <td>0.4251</td>\n",
       "      <td>0.5749</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18983</th>\n",
       "      <td>0.9972</td>\n",
       "      <td>0.0028</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18984</th>\n",
       "      <td>0.5506</td>\n",
       "      <td>0.4494</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18985</th>\n",
       "      <td>0.9998</td>\n",
       "      <td>0.0002</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18986</th>\n",
       "      <td>1.0000</td>\n",
       "      <td>0.0000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>18987 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            0       1\n",
       "0      0.9991  0.0009\n",
       "1      0.9999  0.0001\n",
       "2      0.9999  0.0001\n",
       "3      0.3350  0.6650\n",
       "4      0.2661  0.7339\n",
       "...       ...     ...\n",
       "18982  0.4251  0.5749\n",
       "18983  0.9972  0.0028\n",
       "18984  0.5506  0.4494\n",
       "18985  0.9998  0.0002\n",
       "18986  1.0000  0.0000\n",
       "\n",
       "[18987 rows x 2 columns]"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看训练集的概率\n",
    "prob = model.predict_proba(XX_train)\n",
    "pd.DataFrame(prob).apply(lambda x:round(x,4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "3c97aceb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           是       0.58      0.98      0.73       738\n",
      "           否       1.00      0.91      0.95      5592\n",
      "\n",
      "    accuracy                           0.92      6330\n",
      "   macro avg       0.79      0.94      0.84      6330\n",
      "weighted avg       0.95      0.92      0.92      6330\n",
      "\n"
     ]
    }
   ],
   "source": [
    "#查看预测结果的准确率、召回率、f1-score\n",
    "pred = model.predict(XX_test)\n",
    "print(classification_report(Y_test,pred,labels=[1,0],target_names=['是','否']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "ae07c0d1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[5077,  515],\n",
       "       [  17,  721]], dtype=int64)"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#做出混淆矩阵\n",
    "confusion = confusion_matrix(Y_test,pred)\n",
    "confusion"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "d54648a4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAasAAAGOCAYAAAApcCzoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAArJElEQVR4nO3dfXRU9Z3H8c+dDDMhkkeDRELEJFRRNAgxksNq1lJEuxJ52BUxLLjuqmgVBTE+oKcqHENsOWjR1hKNcKBFkWPFRRfRoo3s1qipEBsDNKKpEeTRkAmGTJ5m/0CmDgGdZAbmd5P3K+eedu7vzvBLTuTD93t/917L5/P5BACAwRyRngAAAD+EsAIAGI+wAgAYj7ACABiPsAIAGI+wAgAYj7ACABiPsAIAGI+wAgAYj7CCEVpbW1VZWRnSZ+zfvz/g9datW/XJJ58E7Dt8+LDmzJmjjz/+uNP729vbddddd2nLli0hzeNE3njjDZWVlam9vf2kfD7QkzkjPQFAkkpLSzVnzhyVlJRo+vTpeuqpp3TnnXcqKiqq07E+n08/+tGPtG3bNv++1atX66abbtLSpUtVUFAgSVq5cqWeeOIJjRo1SrfffrsGDhyomTNnyuFw6PLLL1dWVlbA51ZWVmrJkiWaOHFiwP53331Xb7/9dqd5tLW1qb29XQsXLpQkLVmyRF988YV//Mwzz9TcuXP9rxcuXKgDBw4cNygBfD8qKxjh1ltv1X333acbbrhBv/rVr+R2u3Xuueeqra2t01ZaWiq32x3w/gkTJmj8+PGaNm2aHnjgAUlSUVGR9uzZoyuuuELXXXedLr30UlmWpddff10TJkzoNIcNGzYoNzdXP/7xjyUdqbSam5v1/vvv64knntCXX34ZsO3atUtfffWV//0vvviiPvroIyUkJOj555/X7t27tXfvXu3evVu7du3S+++/r1mzZsnj8ejgwYP6+uuv9dVXX+nw4cMn8ScL9AxUVjDGI488oqamJkVHR8vlcqmtrU1ffvllp+Pq6+vVp0+fgH3R0dFatWqVLrjgAl199dWSpH379qmkpERLlizRzTffrMmTJ+s3v/mNMjMzNXnyZM2bNy+gulq9erUqKytlWZZ/39VXX62rr75a/fv313PPPfe983e5XMrLy9OcOXP06KOP6vrrr9eUKVNUVlbmP+bWW2/VrbfeGvC+devWafz48cH/oIBeiLCCEVpaWuRyufT444/LsiwtX75cO3bsUFpa2nGPz87O7rTPsiw9+OCDkqTCwkI99dRTmjBhgv7whz/oq6++0vDhw/Xqq6+qsrJS9957rzZv3uwPq/fff19bt27VBx98oNtvv12jRo3SlClT5Ha7VV1dHdT34HQe+c/pf//3f3XWWWdp5MiRWrt2rSzL0rhx4zRu3Dj//KQj7czW1lZFR0d36WcF9Ea0ARFxO3fu1KBBgzR9+nT/IovW1lade+658vl8nbZly5apra3N//533nlHV1xxhf9c0OHDh3XzzTfr3Xff1dKlS1VeXq4ZM2Zo3759OnjwoAYPHqzVq1frqquu0tdffy1JmjdvniZNmqScnBzFxMRowIABuuyyy3TJJZdIOtISPLYN+OWXXx53scSbb77pbzMmJCSorq5OH3/8se644w5VV1frww8/VHR0tPr27au4uDi5XK6T+vOFvTU3N8vj8YRla25ujvS3021UVoi41NRUlZWV6dprr1V+fr62b98ur9er7du3B7Tkvmvo0KH+/5+cnKzDhw9r5MiRKiws1KhRozRp0iRZliWHw6H29nY5HA6NGDEi4DPa29t1ww03aNmyZZo3b57OOOOME86xtrb2uFXevn37lJycHLBv48aNuueee/yvFyxYoBkzZmjAgAF66KGH9Nlnn2njxo1B/WzQuzU3Nysu8Qy1NjeG5fNSUlL0+eef27KaJ6xghPPOO0/l5eWqqalRTEyMZs6cqf/4j/844fEOxz+aAhdeeKE2bdqkZ555RvHx8crPz1dra6ucTqcee+wx/frXv1ZVVZWSkpICPqO9vd1fGV144YWKiYlRc3OzOjo65PF49Pe//91fwWVmZurTTz/1v/dPf/qTxowZo8TExE5ze/TRRzV37lxdc801eumll7RmzRq9++672r17t9rb2+Xz+bR79261tLSopaVFQ4YMCeVHhx6spaVFrc2Nyp44T1F9QguY9tZm/WVtkVpaWmwZVrQBYYx+/fr5q59XX31Vjz76qPr16+ffFi1apBdeeEH9+vXr9B+bZVn62c9+pmnTpikqKkpOp1Pr1q3TI488or1792rgwIGKjo4O2L788ku5XC41NDRowIABio2NVd++fbVp0yb98pe/1Nlnn61//ud/PuF8HQ7HcZfWT5gwQZmZmSouLtbf/vY3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",
      "text/plain": [
       "<Figure size 480x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#混淆矩阵可视化\n",
    "plt.matshow(confusion,cmap=plt.cm.Blues, alpha=0.8)\n",
    "plt.title('混淆矩阵')\n",
    "plt.colorbar() \n",
    "plt.ylabel('预测')\n",
    "plt.xlabel('实际')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "9c391236",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "截距为: [-4.16296877]\n",
      "回归系数为: [[ 8.17089156e-04 -5.22484061e-02  3.30350285e-02  6.96367065e-01\n",
      "  -7.94618223e-01 -1.52931745e+00 -2.76766495e-01 -7.89567519e-02\n",
      "  -9.16120306e-01  2.14142728e+00 -2.37491829e-01 -9.59039171e-01\n",
      "  -3.19461385e-01 -1.04750838e+00 -1.30935270e-01 -1.41801858e-02\n",
      "  -2.06024204e-03 -1.36039280e+00 -2.80051512e+00 -3.86998590e+00\n",
      "  -2.92982263e-01 -1.00469704e+00 -3.15827115e+00 -2.31207308e+00\n",
      "  -1.85089508e+00]]\n",
      "训练集正确率 0.9154684784326118\n",
      "预测值正确率 0.915955766192733\n"
     ]
    }
   ],
   "source": [
    "print('截距为:',model.intercept_)\n",
    "print('回归系数为:',model.coef_)\n",
    "print('训练集正确率',model.score(XX_train,Y_train))\n",
    "print('预测值正确率',metrics.accuracy_score(Y_test,pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "f1129e6e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ROC曲线AUC值: 0.9424344592158367\n"
     ]
    }
   ],
   "source": [
    "#计算ROC曲线AUC值\n",
    "from sklearn.metrics import roc_curve,auc\n",
    "fpr,tpr,threshold = roc_curve(Y_test,pred)\n",
    "roc_auc = auc(fpr,tpr)\n",
    "print('ROC曲线AUC值:',roc_auc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "61c5685d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhsAAAHZCAYAAAAv7/mfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACssElEQVR4nOzdd3xTZdvA8V+SppOWtlBWKXvLkFFkKEMKCAoCIrLEraivijIUcIAiDy5EcQCCIiBDkSEIshEFAYuAYEGqUlYLpVC6m6bJ/f6RJiV005Gkvb6fT5+Hc+eM66Sx58o9NUophRBCCCFEKdE6OgAhhBBClG+SbAghhBCiVEmyIYQQQohSJcmGEEIIIUqVJBtCCCGEKFWSbAghhBCiVEmyIYQQQohSJcmGEEIIIUqVJBtCCCGEKFWSbAjhIJs2baJDhw5s3brVVvbkk09Sr149MjIyCnWOzZs3M3XqVC5fvmxXnpiYyIABA5g6dWqJxuxICQkJpKam5vpabGxsod+zvDzwwAM8//zzmEymYp1HCJGTJBtCOEhSUhKHDh2yK0tOTubcuXO4u7sX6hwffPABn332WY5ko1KlSvz000/8+eefAIwePZoXXnihZAJ3kE8//ZSQkBA2bdqU47U6derQuHFjzGZzoc41f/58Nm/ebFe2fft29uzZg06nK5F4hRDZ3BwdgBAVlY+PDwB+fn62Mnd3d/R6faGOP3ToEDt27GDJkiW0aNHC7jWtVktQUBBVq1YFICwsjEceeYTQ0FBGjx5dQndQtpYuXUqlSpW45ZZbOHz4MB4eHmi1lu9LSimaNGnCqVOnbPtnZmai0+lo3ry53XlSU1P58MMPOX36NGvWrOHuu+8GICMjg6ZNm5bdDbmg8+fPk5aWRv369XFzk8eHKDyp2RAVTlRUFBqNxvaj0+kICQlh6NChHD161Laf2Wzmgw8+oEmTJnh4eFC/fn1mzJhBZmZmjnN+8803tG7dGk9PTxo2bMiHH35Y6vcxZcoUevXqxYMPPsipU6fYvn273evu7u62B8LDDz/M0qVLGTx4MJGRkcW67pIlS9BoNMyZMyfHaw8//DAajYbk5GS78k8++QSNRsPu3bttZRkZGbzxxhvUqVMHT09POnTowJYtW3K95s6dOzl58iSvv/46u3btol27dtxyyy00b96c5s2bk5GRwfbt223bzZs3p1WrVjzxxBM5zuXt7c3OnTupXbs29913Hzt27EApRVpaGrVq1SrSe/Hrr79yxx13UKlSJRo2bMiKFSuKdPz1tm7dSlhYGL6+vgQEBDBy5EhOnz6d7zHJyck0atSIhx9+2K48KSmJF154gVq1auHm5kb16tWZMmVKrp/d633++edoNBqioqLsyg8fPkyrVq0ICQmhSZMmVKtWjc8///xmblNUVEqICub06dMKUL1791ZLly5VX3zxhRo/frzy9fVVnp6e6vDhw0oppV544QUFqO7du6uPP/5Y9enTRwHqqaeesjvfnDlzFKB69Oih5s2bpx5++GEFqKlTp9r2OXfunAJu+qdJkyZ211y8eLHy8PBQJ0+eVEopNXz4cKXRaNTu3btt+9StW1cNHDhQ/fjjj+qdd95R999/v6pSpYry9vZWmZmZN/3+PfDAAwpQYWFhOV576KGHFKCSkpLsyufOnasAtWvXLlvZ4MGDFaAef/xx9dlnn6lu3bopnU6nfvrppxznDQ0NVZUrV1YZGRnKaDQqg8GgTCaTUir79zlr1iy7YwwGg0pLS8vzPv7++29VpUoVNX/+fBUXF5frOfKzZ88e5eHhoerWravee+899cQTTyhAbdq0qdDnsFqyZInSaDSqa9euav78+erNN99UgYGBqkqVKioyMjLP4x5//HEFqIceeshWZjabVf/+/ZVer1dPPPGE+uKLL2zv9fPPP5/nuU6dOqV8fHwUoE6fPm0rj42NVUFBQapnz55qz549at++fapv374KsPu8CZEfSTZEhWN9OD377LN25bt27bIlE5GRkUqr1arOnTurjIwMpZRSmZmZqlu3bkqj0dge8hcuXFBeXl6qXbt2ymg02s513333KXd3dxUbG6uUUurKlSsKUEOGDFGRkZEqMjJSLViwQAHqu+++s5UNGTJEubu727YjIyNVcHCwatOmje3c27dvVz4+PurNN99USUlJ6o8//lBarVZNmjRJrV69Wk2ePFndfffdSq/XK0AFBgaqXr16qfHjx6t58+apHTt22MVaFEajUfn7+ytAubu750gqCptsrFmzJsfDz2AwqFq1aqm2bdvaHfvNN98oQAUHB9vK1q9fX2CC9uOPP+aIPykpSZ04cUKdPn1anTt3Th09elSdO3dO/fzzzwpQH374oTp37lyeP9e/b7fccouqXLmyOnfu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",
      "text/plain": [
       "<Figure size 600x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(6, 5))\n",
    "# 绘制ROC曲线。\n",
    "plt.plot(fpr, tpr, label=\"ROC\")\n",
    "# 绘制（0， 0）与（1， 1）两个点的连线，该曲线（直线）为随机猜测的效果。\n",
    "plt.plot([0,1], [0,1], lw=2, ls=\"--\", label=\"随机猜测\")\n",
    "# 绘制（0， 0）， （0， 1）， （1， 1）三点的连线（两条线），这两条线构成完美的roc曲线（auc的值为1）。\n",
    "plt.plot([0, 0, 1], [0, 1, 1], lw=2, ls=\"-.\", label=\"完美预测\")\n",
    "plt.xlim(-0.01, 1.02)\n",
    "plt.ylim(-0.01, 1.02)\n",
    "plt.xticks(np.arange(0, 1.1, 0.1))\n",
    "plt.yticks(np.arange(0, 1.1, 0.1))\n",
    "plt.xlabel('False Positive Rate(FPR)', fontsize=13)\n",
    "plt.ylabel('True Positive Rate(TPR)', fontsize=13)\n",
    "plt.grid()\n",
    "plt.title(f\"ROC曲线-AUC值为{auc(fpr, tpr):.5f}\", fontsize=14)\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b22ca07c",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
